// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.google.zxing.common.reedsolomon; // Referenced classes of package com.google.zxing.common.reedsolomon: // a, GenericGF, ReedSolomonException public final class ReedSolomonDecoder { private final GenericGF a; public ReedSolomonDecoder(GenericGF genericgf) { a = genericgf; } private int[] a(a a1) { int i = 0; int j = 1; int k = a1.b(); if (k == j) { int ai1[] = new int[j]; ai1[0] = a1.a(j); return ai1; } int ai[] = new int[k]; for (; j < a.getSize() && i < k; j++) { if (a1.b(j) == 0) { ai[i] = a.c(j); i++; } } if (i != k) { throw new ReedSolomonException("Error locator degree does not match number of roots"); } else { return ai; } } private int[] a(a a1, int ai[], boolean flag) { int i = ai.length; int ai1[] = new int[i]; int j = 0; while (j < i) { int k = a.c(ai[j]); int l = 1; int i1 = 0; while (i1 < i) { int j1; if (j != i1) { int k1 = a.c(ai[i1], k); int l1; if ((k1 & 1) == 0) { l1 = k1 | 1; } else { l1 = k1 & -2; } j1 = a.c(l, l1); } else { j1 = l; } i1++; l = j1; } ai1[j] = a.c(a1.b(k), a.c(l)); if (flag) { ai1[j] = a.c(ai1[j], k); } j++; } return ai1; } private a[] a(a a1, a a2, int i) { a a4; a a5; a a6; a a7; int j; if (a1.b() >= a2.b()) { a a3 = a2; a2 = a1; a1 = a3; } a4 = a.b(); a5 = a.a(); a6 = a.a(); a7 = a.b(); while (a1.b() >= i / 2) { if (a1.c()) { throw new ReedSolomonException("r_{i-1} was zero"); } a a8 = a.a(); int l = a1.a(a1.b()); int i1 = a.c(l); a a9 = a8; a a10; int j1; int k1; for (a10 = a2; a10.b() >= a1.b() && !a10.c(); a10 = a10.a(a1.a(j1, k1))) { j1 = a10.b() - a1.b(); k1 = a.c(a10.a(a10.b()), i1); a9 = a9.a(a.a(j1, k1)); } a a11 = a9.b(a5).a(a4); a a12 = a9.b(a7).a(a6); a2 = a1; a1 = a10; a4 = a5; a5 = a11; a a13 = a7; a7 = a12; a6 = a13; } j = a7.a(0); if (j == 0) { throw new ReedSolomonException("sigmaTilde(0) was zero"); } else { int k = a.c(j); return (new a[] { a7.c(k), a1.c(k) }); } } public void decode(int ai[], int i) { int j = 0; a a1 = new a(a, ai); int ai1[] = new int[i]; boolean flag = a.equals(GenericGF.DATA_MATRIX_FIELD_256); int k = 0; boolean flag1 = true; while (k < i) { GenericGF genericgf = a; int i1; int j1; boolean flag2; if (flag) { i1 = k + 1; } else { i1 = k; } j1 = a1.b(genericgf.a(i1)); ai1[(-1 + ai1.length) - k] = j1; a a2; a aa[]; a a3; a a4; int ai2[]; int ai3[]; int l; if (j1 != 0) { flag2 = false; } else { flag2 = flag1; } k++; flag1 = flag2; } if (!flag1) { a2 = new a(a, ai1); aa = a(a.a(i, 1), a2, i); a3 = aa[0]; a4 = aa[1]; ai2 = a(a3); ai3 = a(a4, ai2, flag); while (j < ai2.length) { l = (-1 + ai.length) - a.b(ai2[j]); if (l < 0) { throw new ReedSolomonException("Bad error location"); } ai[l] = GenericGF.b(ai[l], ai3[j]); j++; } } } }